// 处理路由权限的模块
// constantRoutes 静态路由列表, asyncRouter 所有的动态路由数组
import { constantRoutes, asyncRoutes } from '@/router'


const state = {
    routes: constantRoutes,//路由表，所有用户都拥有的静态路由+个人权限的动态路由,一开始默认只有静态路由，用户登录之后再加上动态路由
}
const mutations = {
    // 修改路由表
    setRoutes(state, newRoutes) {
        state.routes = [...constantRoutes, ...newRoutes] //显示左侧菜单

    }
}
const getters = {

}
const actions = {
    // 筛选权限路由,第二个参数是用户所拥有的菜单权限
    filterRoutes(context, menus) {
        let routes = []
        // 筛选出动态路由和menus能够对手的
        menus.forEach(key => {
            // 从所有动态路由中筛选出用户的权限路由
            let rs = asyncRoutes.filter(item => {
                return item.name === key
            })
            if (rs.length > 0) {
                routes.push(...rs)
            }
        });
        // 将动态路由提交给mutations
        context.commit('setRoutes', routes)
        // 返回，这是给路由addRoutes使用
        return routes
    }
}


export default {
    namespaced: true,
    state,
    mutations,
    actions,
    getters
}
